package nxu.controller;

import jakarta.servlet.http.HttpSession;
import nxu.entity.User;
import nxu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    // 说明：此处是为了展现Model的使用方法，无特别用处
    @RequestMapping("/")
    public String index(Model model) {
        model.addAttribute("message", "MJ MANAGER SYSTEM");
        ArrayList<String> info = new ArrayList<>();
        info.add("项目信息：");
        info.add("Spring6");
        info.add("JDK 21.0.4");
        info.add("Maven 3.9.9");
        info.add("Tomcat 10");
        info.add("MySQL 8.0.40");
        model.addAttribute("infoList", info);
        return "index";
    }

    @GetMapping("/loginPage")
    public String getLoginPage() {
        return "login/login";
    }

    @GetMapping("/registerPage")
    public String getRegisterPage() {
        return "/register/register";
    }

    // 说明：为了展示更多写法，这里登录采用传递多个参数，注册采用实体类接收参数
    // 登录和注册的时候可以先判断手机号码是否存在和是否被注册，然后再执行后续步骤
    // 即返回多种状态信息，给用户提供更好的使用体验，这里就不具体演示了

    @PostMapping("/userLogin")
    @ResponseBody
    public Map<String, Object> userLogin(HttpSession session, String phone, String password) {
        Map<String, Object> map = new HashMap<>();
        User user = userService.userLogin(phone, password);
        if (user == null) {
            map.put("status", 1);
            map.put("message", "手机号或密码不正确！");
        } else {
            map.put("status", 2);
            map.put("message", "登录成功，欢迎您！");
            session.setAttribute("user", user);     // 把用户数据存入Session
        }
        return map;
    }

    @PostMapping("/userRegister")
    @ResponseBody
    public Map<String, Object> register(@ModelAttribute User user) {
        Map<String, Object> map = new HashMap<>();
        int result = userService.userRegister(user);
        if (result == 1) {
            map.put("status", true);
            map.put("message", "注册成功！即将跳转登录页面！");
        } else {
            map.put("status", false);
            map.put("message", "注册失败！请联系系统管理员~");
        }
        return map;
    }
}
